/**
 * @file: testMazo.cpp 
 * @author: Juan Marcos Gutierrez Ramos
 * @date: JUN-13-2009
 * @desc: Unit test de la clase Mazo
 */
#include <set>
#include "../../Mazo.h"
#include "../Unit--/unit--.h"
#include "../../Carta.h"
#include "../../Constantes.h"

using namespace std;

testSuite(MazoSuite);//crea suite

testCase(Case1, MazoSuite) // prueva si sirve la funcion barajarCartas()
{
    Mazo a;
    int c = 0;
    Carta* carta;
    for(int i = 0;i<54;i++){
        carta = a.repartirNext();
        if(carta != NULL){
            c++;
            }
        }
    assertTrue(52 == c);//prueva
    a.barajarCartas();
    c = 0;
    for(int i = 0;i<54;i++){
        carta = a.repartirNext();
        if(carta != NULL){
            c++;
            }
        }
    assertTrue(52 == c);//prueva
    a.barajarCartas();
    c = 0;
    for(int i = 0;i<54;i++){
        carta = a.repartirNext();
        if(carta != NULL){
            c++;
            }
        }
    assertTrue(52 == c);//prueva
}

testCase(Case2, MazoSuite) // prueva si no hay cartas repetidas
{
    Mazo a;
    set<Carta*> conjuntoSinRepetidas;
    Carta* carta;
    for(int i = 0;i<52;i++){
        carta = a.repartirNext();
        if(carta != NULL)
        conjuntoSinRepetidas.insert(carta);
        }
    assertTrue(52 == conjuntoSinRepetidas.size());
    a.barajarCartas();
    for(int i = 0;i<52;i++){
        carta = a.repartirNext();
        if(carta != NULL)
        conjuntoSinRepetidas.insert(carta);
        }
    assertTrue(52 == conjuntoSinRepetidas.size());
}
